window.workspace = function(){
	var response  = <?#$respons?>;
	var sid = {'aarea':Ext.id(), 'country':Ext.id(), 'region':Ext.id(), 'rtmp':Ext.id()};
	var tstore, tgrid, agrid, twin, tform, awin, aform, tsm, asm, docker;
	function addAForm(rows) {
		if(!awin) {
			aform = new Ext.form.FormPanel({
				frame		: true,
				border		: false,
				bodyStyle	: 'padding:8px;',
		        labelWidth	: 80,
		        fileUpload  : true,
		        labelAlign  : 'right',
		    	defaults	: {
		    		xtype	  : 'textfield'
		    	},
		    	items		: [{
					xtype		: 'hidden',
					name		: 'id',
					value		: 0
				},{
					xtype		: 'textfield',
					fieldLabel	: '区域国家',
					width		: 160,
					name		: 'area',
					allowBlank	: false,
					maxLength   : 255
				},{
					xtype		: 'textfield',
					fieldLabel	: '区域全名',
					width		: 160,
					name		: 'name',
					allowBlank	: false,
					maxLength   : 255
				},{
		    		xtype		: 'combo',
		            store		: new Ext.data.ArrayStore({
			        	fields: ['id','name'],
			        	data: main.cv2Array(response.area)
			    	}),
					displayField	: 'name',
					valueField		: 'id',
					mode			: 'local',
					emptyText		: 'plz selected',
		            fieldLabel		: '所在机房',
		            width			: 160,
		            allowBlank		: false,
					triggerAction	: 'all',
					hiddenName		: 'region',
		            name			: 'region'
		        }]
			});
		    awin = new Ext.Window({
				title	: '添加[Add]',
				iconCls	: 'icon-add',	
				width	: 320,
				items	: [aform],
				closeAction : 'hide',
				bbar 	: {
					xtype		: 'toolbar',
					buttonAlign	: 'right',
					items		: [{
						text	: '保存[Save]', 
						url  	: '/admin/live/config/rtmp/arsave.html',
						iconCls	: 'icon-save',
						handler	: function(){
						if(!aform.getForm().isValid())
		        			return;
						aform.getForm().submit({
							waitMsg		: GLang['30017'],
							waitTitle 	: GLang['30003'],
			        		clientValidation: true,
			        		url		: '/admin/live/config/rtmp/arsave.html',
				        	success	: function(form, action) {
				        		astore.reload();
				        		awin.hide();
							},
							failure	: main.submitFailure
				    	});
					}}]
				}
			});
		}
		var id = Ext.isObject(rows)? rows.id:0;
		awin.setTitle((id > 0)? '编辑[Edit]':'添加[Add]');
		awin.setIconClass((id > 0)? 'icon-edit':'icon-add');
		awin.show();
		if(id < 1) {
			aform.getForm().reset();
		} else {
			aform.getForm().loadRecord(rows);
		}
	};
	function addTForm(rows){
		if(!twin) {
		    tform = new Ext.form.FormPanel({
				frame		: true,
				border		: false,
				bodyStyle	: 'padding:8px;',
		        labelWidth	: 100,
		        fileUpload  : true,
		        labelAlign  : 'right',
		    	defaults	: {
		    		xtype	  : 'textfield'
		    	},
		    	items		: [{
					xtype		: 'hidden',
					name		: 'id',
					value		: 0
				},{
		    		xtype		: 'combo',
		            store		: new Ext.data.JsonStore({
		            	url	: '/admin/live/config/rtmp/topsrc.html',
		            	autoDestroy: true,
		            	fields: ['id', 'name'],
		            	root: 'dataset'
		            }),
					displayField	: 'name',
					valueField		: 'id',
					emptyText		: 'selected...',
					fieldLabel		: 'TOP源服务器',
		            pageSize		: 10,
		            typeAhead		: true,
		            width			: 160,
		            listWidth		: 258,
		            typeAheadDelay  : 0,
		            minChars		: 1,
		            autoSelect 		: true,
		            forceSelection	: true,
					triggerAction	: 'all',
					enableKeyEvents : true,
					name			: 'pid',
					hiddenName		: 'pid',
					mode			: 'remote'
		        },{
					xtype		: 'textfield',
					fieldLabel	: '域名RTMP',
					width		: 300,
					emptyText   : '格式IP/Domain',
					name		: 'rtmp',
					allowBlank	: false,
					maxLength   : 255
				},{
					xtype		: 'textfield',
					fieldLabel	: '主机[IP]',
					width		: 300,
					emptyText   : '格式IP',
					name		: 'host',
					allowBlank	: false,
					maxLength   : 255
				},{
					xtype		: 'textfield',
					fieldLabel	: '服务端口[Ports]',
					width		: 300,
					emptyText   : '服务端口,多个使用否好分割',
					name		: 'ports',
					allowBlank	: false,
					maxLength   : 255
				},{
		    		xtype		: 'combo',
		            store		: new Ext.data.ArrayStore({
			        	fields: ['id','name'],
			        	data: main.cv2Array(response.area)
			    	}),
					displayField	: 'name',
					valueField		: 'id',
					mode			: 'local',
					emptyText		: 'plz selected',
		            fieldLabel		: '所在机房',
		            width			: 160,
		            allowBlank		: false,
					triggerAction	: 'all',
					hiddenName		: 'region',
		            name			: 'region'
		        },{
					xtype		: 'numberfield',
					fieldLabel	: '记录优先级',
					width		: 120,
					emptyText   : '数值越大越靠后...',
					allowBlank	: false,
					name		: 'rank'
				},{
					xtype		: 'numberfield',
					fieldLabel	: '链接上限',
					width		: 160,
					emptyText   : '链接上限,大于该数值之后走HSL...',
					allowBlank	: false,
					name		: 'limitfd'
				},{
		    		xtype		: 'combo',
		            store		: new Ext.data.ArrayStore({
			        	fields: ['id','name'],
			        	data: main.cv2Array(response.status)
			    	}),
					displayField	: 'name',
					valueField		: 'id',
					mode			: 'local',
					emptyText		: 'plz selected',
		            fieldLabel		: '记录状态',
		            width			: 120,
		            allowBlank		: false,
					triggerAction	: 'all',
					hiddenName		: 'status',
		            name			: 'status'
		        },{
		    		xtype		: 'combo',
		            store		: new Ext.data.ArrayStore({
			        	fields: ['id','name'],
			        	data: main.cv2Array(response.type)
			    	}),
					displayField	: 'name',
					valueField		: 'id',
					mode			: 'local',
					emptyText		: 'plz selected',
		            fieldLabel		: '地址类型',
		            width			: 120,
		            allowBlank		: false,
					triggerAction	: 'all',
					hiddenName		: 'stype',
		            name			: 'stype'
		        }]
			});
		    twin = new Ext.Window({
				title	: '添加[Add]',
				iconCls	: 'icon-add',	
				width	: 480,
				items	: [tform],
				closeAction : 'hide',
				bbar 	: {
					xtype		: 'toolbar',
					buttonAlign	: 'right',
					items		: [{
						text	: '保存[Save]', 
						iconCls	:'icon-save',
						url		: '/admin/live/config/rtmp/dosave.html',
						handler:function(){
						if(!tform.getForm().isValid())
		        			return;
						tform.getForm().submit({
							waitMsg		: GLang['30017'],
							waitTitle 	: GLang['30003'],
			        		clientValidation: true,
			        		url		: '/admin/live/config/rtmp/dosave.html',
				        	success	: function(form, action) {
				        		tstore.reload();
				        		twin.hide();
							},
							failure	: main.submitFailure
				    	});
					}}]
				}
			});
		}
		var id = Ext.isObject(rows)? rows.id:0;
		twin.setTitle((id > 0)? '编辑[Edit]':'添加[Add]');
		twin.setIconClass((id > 0)? 'icon-edit':'icon-add');
		twin.show();
		if(id < 1) {
			tform.getForm().reset();
		} else {
			tform.getForm().loadRecord(rows);
			tform.getForm().findField('pid').setRawValue(rows.get('phost'));
		}
	};
	tstore = new Ext.data.JsonStore({
	    autoDestroy	: true,
	    url			: '/admin/live/config/rtmp/dolist.html',
	    sortInfo	: {
            field		: 'id',
            direction	: 'ASC'
		},
		baseParams	: {
			start	: 0,
			limit	: main.pageSize
		},
		autoLoad		: true,
	    root			: 'dataset',
	 	totalProperty	: 'total',
	    fields			: ['id', 'rtmp', 'pid', 'host', 'phost', 'ports', 'stype', 'rank',
	         'region', 'srsnet', 'avgload', 'limitfd', 'status', 'stime']
	});
	tsm   = new Ext.grid.CheckboxSelectionModel();
	tgrid = {
		xtype		: 'grid',
	    store		: tstore,
		region		: 'center', 
	    columns		: [
			tsm,
			{header: 'ID编号', width:50, sortable:true, dataIndex:'id'},
			{header: '源服务器', width:80, dataIndex:'phost'},
			{header: '域名RTMP', width:120, dataIndex:'rtmp'},
			{header: '主机[IP]', width:100, dataIndex:'host', sortable:true},
			{header: '服务端口[Ports]', width:100, dataIndex:'ports'},
			{header: '连接限制', width:60, dataIndex:'limitfd'},
			{header: '客户端连接数', width:80, dataIndex:'srsnet', sortable:true},
			{header: '状态', width:60, sortable:true, dataIndex:'status', renderer:function(v){
				return response.status[v];
			}},
			{header: '地址类别', width:60, dataIndex:'stype', sortable:true, renderer:function(v){
				return response.type[v];
			}},
			{header: '所在机房', width:60, dataIndex:'region', sortable:true, renderer:function(v){
				return (!!response.area[v])? response.area[v]:'未设置';
			}},
			{header: '记录优先级', width:60, dataIndex:'rank', sortable:true},
			{header: '服务器负载', width:60, dataIndex:'avgload', sortable:true},
			{header: '更新时间',width:100, dataIndex:'stime'}
		],
	    viewConfig	: {
	        forceFit	 : true,
	        scrollOffset : 0
	    },
		listeners	: {
			'rowdblclick':function(grid, index, e){
		    	var data = grid.store.getAt(index).copy();
		    	addTForm(data);
		    }
		},	
	    sm			: tsm,
	    stripeRows	: true,
	    tbar		: [{
			text	: '刷新',
			iconCls	: 'icon-refresh',
			handler : function(){
				tstore.reload(); 
			}
	    },'-',{
			text	: '添加[Add]',
			iconCls	: 'icon-add',
			url		: '/admin/live/config/rtmp/dosave.html',
			handler : function() {
				addTForm(0);
			}
		},'-',{
			text	: '删除[Del]',
			iconCls	: 'icon-delete',
			url		: '/admin/live/config/rtmp/dodelete.html',
			handler : function(){
				var rcs = tsm.getSelections();
				if(Ext.isEmpty(rcs)) {
					Ext.Msg.alert('信息提示', '请选择要操作的记录.');
					return;
				}
				var ids= [];
				Ext.each(rcs, function(item){
					ids.push(item.get('id'));
				});
				Ext.Msg.confirm('信息提示','您确定要删除改记录吗?删除之后将无法恢复...',function(btn){
					if(btn=="yes") {
						Ext.Ajax.request({
							url		: '/admin/live/config/rtmp/dodelete.html',
							params	: {'ids':ids.join(',')},
							success : function(resp, req){
								var data = Ext.decode(resp.responseText);
								if(data.code == 0) {
									tstore.reload(); 
								} else {
									Ext.Msg.alert('信息提示', data.msg);
								}
							}
						});
					}
				});
			}
		},'-','域名RTMP:',{
			xtype       : 'textfield',
			id	    	: sid.rtmp,
			width	    : 80
		},'机房:',{
    		xtype		: 'combo',
            store		: new Ext.data.ArrayStore({
            	fields: ['id', 'name'],
            	data  : main.cv2Array(response.area)
            }),
			displayField	: 'name',
			valueField		: 'id',
			emptyText		: '请选择',
            width			: 120,
			triggerAction	: 'all',
			id      		: sid.region,
			mode			: 'local'
        },'-',{
			text			: '检索',
			iconCls			: 'icon-search',
			handler: function() {
				tstore.baseParams.rtmp = Ext.getCmp(sid.rtmp).getValue();
				tstore.baseParams.region = Ext.getCmp(sid.region).getValue();
				tstore.reload(); 
			}
        }],
		bbar		: new Ext.PagingToolbar({
			pageSize	: main.pageSize,
			store		: tstore,
			displayInfo	: true
		})
	};
 	
	astore = new Ext.data.JsonStore({
	    autoDestroy	: true,
	    url			: '/admin/live/config/rtmp/doarea.html',
	    sortInfo	: {
            field		: 'id',
            direction	: 'DESC'
		},
		baseParams	: {
			start	: 0,
			limit	: main.pageSize
		},
		autoLoad		: true,
	    root			: 'dataset',
	 	totalProperty	: 'total',
	    fields			: ['id', 'area', 'name', 'region']
	});
	asm    = new Ext.grid.CheckboxSelectionModel();
	agrid = {
		region		: 'east',
		width		: 480,
		bodyStyle	: 'padding:8px;',
		split       : true,
		collapseMode: 'mini',
		bodyBorder  : false,
		animCollapse: true,
		xtype		: 'grid',
	    store		: astore,
	    columns		: [
			asm,
			{header: 'ID', width:50, sortable:true, dataIndex:'id'},
			{header: '所在机房', width:80, dataIndex:'region', sortable:true, renderer:function(v){
				return (!!response.area[v])? response.area[v]:'未设置';
			}},
			{header: '地域全名', width:80, dataIndex:'name', sortable:true},
			{header: '地域国家', width:60, dataIndex:'area', sortable:true}
		],
	    viewConfig	: {
	        forceFit	 : true,
	        scrollOffset : 0
	    },
	    listeners	: {
			'rowdblclick':function(grid, index, e){
		    	var data = grid.store.getAt(index).copy();
		    	addAForm(data);
		    }
		},
	    sm			: asm,
	    stripeRows	: true,
	    tbar		: [{
			text	: '刷新',
			iconCls	: 'icon-refresh',
			handler : function(){
				astore.reload(); 
			}
	    },'-',{
			text	: '添加[Add]',
			iconCls	: 'icon-add',
			url     : '/admin/live/config/rtmp/arsave.html',
			handler : function() {
				addAForm(0);
			}
		},'-',{
			text	: '删除[Del]',
			iconCls	: 'icon-delete',
			url     : '/admin/live/config/rtmp/ardelete.html',
			handler : function(){
				var rcs = asm.getSelections();
				if(Ext.isEmpty(rcs)) {
					Ext.Msg.alert('信息提示', '请选择要操作的记录.');
					return;
				}
				var ids= [];
				Ext.each(rcs, function(item){
					ids.push(item.get('id'));
				});
				Ext.Msg.confirm('信息提示','您确定要删除改记录吗?删除之后将无法恢复...',function(btn){
					if(btn=="yes") {
						Ext.Ajax.request({
							url		: '/admin/live/config/rtmp/ardelete.html',
							params	: {'ids':ids.join(',')},
							success : function(resp, req){
								var data = Ext.decode(resp.responseText);
								if(data.code == 0) {
									astore.reload(); 
								} else {
									Ext.Msg.alert('信息提示', data.msg);
								}
							}
						});
					}
				});
			}
		},'-','国家:',{
			xtype       : 'textfield',
			id	    	: sid.country,
			width	    : 50
		},'机房:',{
    		xtype		: 'combo',
            store		: new Ext.data.ArrayStore({
            	fields: ['id', 'name'],
            	data  : main.cv2Array(response.area)
            }),
			displayField	: 'name',
			valueField		: 'id',
			emptyText		: '请选择',
            width			: 60,
			triggerAction	: 'all',
			id      		: sid.aarea,
			mode			: 'local'
        },'-',{
			text			: '检索',
			iconCls			: 'icon-search',
			handler: function() {
				astore.baseParams.area = Ext.getCmp(sid.country).getValue();
				astore.baseParams.region = Ext.getCmp(sid.aarea).getValue();
				astore.reload(); 
			}
        }],
		bbar		: new Ext.PagingToolbar({
			pageSize	: main.pageSize,
			store		: astore,
			displayInfo	: true
		})
	};
	docker = {
		title	: response.title,
		layout	: 'border',
		region	: 'center', 
		listeners	: {
			'destroy':function(){
    			awin && awin.close();
    			twin && twin.close();
    		}
		},
		items	: [tgrid, agrid]
	};
	return docker;
}();